Este es mi código actual.
<TextField error={values[1].error} fullWidth id="id" type="number" value={values[1].Id} placeholder='Enter ID' onChange={handleChange(1,'Id')} variant="outlined" inputProps={{min: 0,inputMode: 'numeric', pattern: '[0-9]'}} onBlur={() => handleOnBlurEvent(1,'Id')} />Como menciona jonrsharpe , los números que contienen - o e siguen siendo números válidos.
Si aún desea limitar los cambios que se aceptan, puede utilizar una función handleNumberChange personalizada que filtra caracteres como e , E y - .
const handleNumberChange = (id: number, key: string, value: string) => { if (["e", "E", "-"].some((char) => value.includes(char))) return; // handle change here }; Lo usarías así en tu MUI <TextField/> :
<TextField ... onChange={(e) => handleNumberChange(1, "Id", e.target.value)} />